package config

type Config struct {
	Mysql    MysqlBlogConfig `yaml:"mysql-blog"`
	Logger   LoggerConfig    `yaml:"logger"`
	System   SyStemConfig    `yaml:"system"`
	SiteInfo SiteInfo        `yaml:"site-info"`
	Qq       QQ              `yaml:"qq"`
	Email    Email           `yaml:"email"`
	Jwt      Jwt             `yaml:"jwt"`
	QiNiu    QiNiu           `yaml:"qiniu"`
	Upload   Upload          `yaml:"upload"`
	Redis    Redis           `yaml:"redis"`
}

// MysqlBlogConfig 这里不用viper
type MysqlBlogConfig struct {
	DBHost     string `yaml:"db_host"`
	DBPORT     int    `yaml:"db_port"`
	DBDATABASE string `yaml:"db_database"`
	DBUSERNAME string `yaml:"db_username"`
	DBConfig   string `yaml:"db_config"` // 高级配置 例如charset
	DBPASSWORD string `yaml:"db_password"`
	DBDEBUG    bool   `yaml:"db_debug"`
	DBLogLevel string `yaml:"db_log_level"` // 日志等级，debug = 输出全部sql， dev,release
}

type LoggerConfig struct {
	DbHost       string `yaml:"db_host"`
	Prefix       string `yaml:"prefix"`         // 前缀
	Director     string `yaml:"director"`       // 日志存放路径
	ShowLine     bool   `yaml:"show_line"`      // 是否显示行号
	Level        string `yaml:"Level"`          // 是否显示行号
	LogInConsole bool   `yaml:"log_in_console"` // 是否显示打印日志
}

type SyStemConfig struct {
	Host string `yaml:"host"`
	Prod int    `yaml:"prod"`
	Env  string `yaml:"env"`
}

type SiteInfo struct {
	CreateDt string `yaml:"create_dt" json:"create_dt"`
	BeiAn    string `yaml:"bei_an" json:"bei_an"`
	Title    string `yaml:"title" json:"title"`
	QqImage  string `yaml:"qq_image" json:"qq_image"`
	Version  string `yaml:"version" json:"version"`
	Email    string `yaml:"email" json:"email"`
	WeChat   string `yaml:"weChat" json:"weChat"`
	Name     string `yaml:"name" json:"name"`
	Job      string `yaml:"job" json:"job"`
	Addr     string `yaml:"addr" json:"addr"`
	Slogan   string `yaml:"slogan" json:"slogan"`
	SloganEN string `yaml:"slogan_en" json:"slogan_en"`
}

type QQ struct {
	AppID    string `yaml:"app_id" json:"app_id"`
	Key      string `yaml:"key" json:"key"`
	Redirect string `yaml:"redirect" json:"redirect"` // 登陆后回调地址
}

type Email struct {
	Host             string `yaml:"host" json:"host"`
	Prod             int    `yaml:"prod" json:"prod"` //注意端口号用465如果发送不成功时，换成587
	User             string `yaml:"user" json:"user"` // 发件人邮箱
	PassWord         string `yaml:"password" json:"password"`
	DefaultFromEmail string `yaml:"default_from_email" json:"default_from_email"` // 默认发件人名称
	UserSSL          bool   `yaml:"user_ssl" json:"user_ssl"`                     // 使用ssl
	UserTSL          bool   `yaml:"user_tsl" json:"user_tsl"`                     // 使用tsl
}

type Jwt struct {
	Secret  string `yaml:"secret" json:"secret"`   // 密钥
	Expires uint   `yaml:"expires" json:"expires"` // 过期时间
	IsUser  string `yaml:"is_user" json:"is_user"` // 办法人
}

type QiNiu struct {
	Enable    bool    `yaml:"enable" json:"enable"` // 是否启用七牛存储
	AccessKey string  `yaml:"access_key" json:"access_key"`
	SecretKey string  `yaml:"secret_key" json:"secret_key"`
	Bucket    string  `yaml:"bucket" json:"bucket"` // 储存桶名字
	CDN       string  `yaml:"cdn" json:"cdn"`       // 访问图片地址前缀
	Zone      string  `yaml:"zone" json:"zone"`     // 存储地区
	Size      float64 `yaml:"size" json:"size"`     // 单位M
}

type Upload struct {
	Path string `yaml:"path" json:"path"` // 存储路径
	Size int64  `yaml:"size" json:"size"` // 单位M
}

type Redis struct {
	Host     string `yaml:"host"`
	Prot     int    `yaml:"port"`
	Password string `yaml:"password"`
}
